
import Vue from 'vue';
// vuex是vue的状态管理工具，使用集中式管理数据。
import Vuex from 'vuex';

import axios from 'axios';
Vue.use(Vuex);

// 创建仓库对象。仓库对象是整个应用的数据（状态）管理中心。
var store = new Vuex.Store({
    // state,数据仓库中的数据和它的初始值
    state:{
        imgs:[],
        imgs2:[],
        imgs3:[],
        imgs5:[],
        imgs6:[],
        imgs7:[],
        imgs8:[],
        imgs9:[],
        registalert:null,
        loginalert:null,
        isLogin:false,
        currentScrollTop:0
    
    },
    // 对于仓库中的一些数据，有时不希望直接使用 ，而是使用它的一些衍生值，那么可以写成一个getter，类似组件中的computed。
    getters:{

    },
    // mutations,对于store中的state数据的修改，不建议直接在组件中修改state的属性。而是在store中添加一些数据修改方法mutations，然后组件中提交mutation来修改数据。(类似组件的methods)
    mutations:{
        HomeSwiper:function(state,value){
            state.imgs = value;
        },
        TwoClass:function(state,value){
            state.imgs2 = value;
        },
        ThirdClass:function(state,value){
            state.imgs3 = value;
        },
        Regist:function(state,value){
            state.registalert = value;
        },
        Login:function(state,value){
            state.loginalert = value;
        },
        FifthClass:function(state,value){
            state.imgs5 = value;
        },
        Classify:function(state,value){
            state.imgs6 = value;
        },
        GoodsList:function(state,value){
            state.imgs7 = value
        },
        setCurrentScrollTop:function(state,value){
            state.currentScrollTop = value;
        },
        GoodsDetails:function(state,value){
            state.imgs8 = value;
        },
        GoodsCard:function(state,value){
            state.imgs9 = value;
        }

    },
    // mutations只用于同步的数据修改，异步的数据修改(例如网络请求的数据)，需要使用actions。
    actions:{
        // actions中数据也不能直接修改state中的数据，需要使用commit提交
        Swiper:function(state,data){
            axios.get("/api/Home")
            .then(res=>{
                state.commit("HomeSwiper",res.data.imgs);
                state.commit("TwoClass",res.data.imgs2);
                state.commit("ThirdClass",res.data.imgs3);
                state.commit("FifthClass",res.data.imgs5)
            })
        },
        // 注册
        regist:function(state,data){
            return axios.get("/api/regist",{
                params:{
                    username:data.username,
                    psw:data.psw
                }
            })
            .then(res=>{
                state.commit("Regist",res.data.msg);
            })
        },
        // 登录
        login:function(state,data){
            return axios.get("/api/login",{
                params:{
                    username:data.username,
                    psw:data.psw
                }
            })
            .then(res=>{
                    state.commit("Login",res.data.msg);
                    if(res.data.msg=="登录成功"){
                        var data = JSON.stringify(res.data.data)
                        sessionStorage.setItem("userInfo",data);
                        history.back();
                    }
                    
                })
        },
        // 退出登录
        tuichu:function(state,data){
            axios.get("/api/tuichu")
            .then(res=>{
                sessionStorage.removeItem("userInfo");
                location.hash = "/Myself";
            })
        },
        // 分类
        classify:function(state,data){
            return axios.get("/api/classify")
            .then(res=>{
                state.commit("Classify",res.data.classify)
            })
        },
        // 详细分类
        goodslist:function(state,data){
            return axios.get("/api/goodslist",{
                params:{
                    type:data.type,
                    title:data.title
                }
            })
            .then(res=>{
                state.commit("GoodsList",res.data.data3)
            })
        },
        goodsDetails:function(state,data){
            return axios.get("/api/goodsDetails",{
                params:{
                    title:data.title
                }
            })
            .then(res=>{
                state.commit("GoodsDetails",res.data.data1)
            })
        },
        // 加入购物车
        joinGoodsCard:function(state,data){
            return axios.get("/api/joinGoodsCard",{
                params:{
                    number:data.number,
                    title:data.title
                }
            })
            .then(res=>{
                // 
            })
        },
        // 购物车列表
        GoodsCard:function(state,data){
            return axios.get("/api/GoodsCard",{
                params:{
                    username:data
                }
            })
            .then(res=>{
                state.commit("GoodsCard",res.data.data1)
            })
        }
        
    }
})

export default store;